System and method for visually indicating cache activity in a computer system

ABSTRACT

A system, method and computer program product of especial utility in providing a visual indication to a computer system user of the familiar &#34;blinking&#34;, of pulsing, data access lights of conventional hardware data sources such as disk drives, CDROM drives and network connections in order to illustrate data cache &#34;hits&#34; and &#34;misses&#34; of an inherently computer program based caching function by incorporating simulated access lights as part of a graphical user interface (&#34;GUI&#34;) for a data caching computer program. The GUI then allows a system user to intuitively visualize how effectively the data cache is functioning with respect to data which is accessed from the cache and data which must be accessed from another relatively more slow access time data source.

CROSS REFERENCE TO RELATED APPLICATIONS

The present invention is related to the subject matter disclosed and claimed in co-pending U.S. patent application Ser. No. 08/627,936, now U.S. Pat. No. 5,686,850, for "System and Method for Determining Relative Cache Performance in a Computer System" filed on even date herewith and assigned to Sun Microsystems, Inc., assignee of the present invention, the disclosure of which is hereby specifically incorporated herein by this reference.

BACKGROUND OF THE INVENTION

The present invention relates, in general, to the field of computers and computer memory systems. More particularly, the present invention relates to a system and method for visually indicating cache activity in a computer system utilizing a computer mass storage device such as a rotating, randomly accessible mass storage medium, comprising a "hard", "fixed", "rigid" or Winchester disk drive, as a data cache for a remote network data source or another relatively slower computer mass storage device such as a compact disk read-only memory ("CDROM").

As a general rule, central processors can process data significantly more quickly than it can be moved in and/or out of primary storage, or the data "source". Consequently, the performance of a computer system is substantially limited by the speed of its primary data storage devices, networks and subsystems. In order to ameliorate this perceived "bottleneck", central processor interaction with the data source may be minimized by storing frequently referenced data in a relatively small, high-speed semiconductor memory cache located between the processor and the primary storage devices. However, such semiconductor memory, whether dynamic or static random access memory ("DRAM" or "SRAM"), is relatively costly per megabyte of storage compared to disk drives (on the order of eighty times more expensive) and, as such, the cache must generally be of comparatively limited capacity. Small caches function relatively well for repeatedly small data burst loads but poorly for sustained loads.

When utilizing caching techniques, should a program issue a "read" command for an instruction or user data, the processor first looks in its cache. Should the requested data reside in the cache, (a cache "hit") there is no need to attempt to read from the data source which may be located on a network, compact disk read only memory ("CDROM") or any other relatively slow access time device or subsystem. However, if the requested data is not available in the cache, (a cache "miss") the processor must then access the data source in order to retrieve the data sought.

Data which must be retrieved from the data source may then be written to the cache where it may later be accessed by the processor directly without request of the original data source. Alternatively, any data which may be subsequently modified by the processor may also be written to the cache. In any event, inasmuch as a semiconductor memory or other cache may have relatively limited storage capacity, a data replacement algorithm of some sort is generally used to determine what existing data should be overwritten in the cache when additional data is read from primary storage.

In light of the foregoing, the current trend is toward ever larger semiconductor cache sizes or the utilization of local caching to an associated hard disk drive. Heretofore however, the computer user has had no way of readily visualizing the performance advantages of his data cache, particularly in a perceptibly intuitive way that simulates the familiar data access lights, or indicators, on floppy, hard disk and CDROM drives as well as network connections.

SUMMARY OF THE INVENTION

The system, method and computer program product of the present invention is of especial utility in providing a visual indication of the familiar "blinking", or pulsing, data access lights of the previously mentioned conventional hardware data sources in order to illustrate data cache "hits" and "misses" of an inherently computer program based caching function by incorporating simulated access lights, or indicators, as part of a graphical user interface ("GUI") for a data caching computer program. The GUI then allows a system user to intuitively visualize how effectively the data cache is functioning with respect to data which is accessed from the cache and data which must be accessed from another data source.

The system and method of the present invention polls the data cache at a rate of substantially once per second to obtain throughput data. If the associated activity numbers have increased since the last poll, a simulated green activity light is flashed, or pulsed, on the GUI. In a more particular embodiment, a green activity light is pulsed on screen to indicate data accesses being satisfied from the cache (a cache "hit") and an amber activity light is pulsed to indicate data accesses having to be satisfied from the original data source such as a network drive, a local compact disk read-only memory ("CDROM") or other relatively slow access time data storage source, (a cache "miss").

The use of both green and amber activity lights provides a visual indication to a user of the relative weights of cache "hits" and "misses" respectively. The lights, or indicators, may be pulse modulated in conjunction with the GUI 100 ms timer. As previously described, the cache is polled once per second to obtain throughput data. The use of the 100 ms timer, therefore, sets up 10 time intervals during which the "hit" and "miss" data may be pulsed out to the simulated activity lights of the GUI. Per one second time interval then, there are five logic level "high" and five logic level "low" periods of 100 ms duration each.

As an example, if during the cache polling operation, the throughput data indicates that there were 20 cache "hits" and 11 cache "misses", during a one second interval, the greater of the two number is utilized to set a baseline (i.e. 20 "hits"). The green activity light would then be "illuminated" on each of the five logic level one time periods per second to reflect the baseline amount. The lesser of the two numbers (i.e. 11 "misses") is then 55% of the baseline number of 20. Rounding the 55% figure up to the nearest 20% (due to the 5 pulses per second resolution available) the "misses" then become 60% of the baseline 20 "hits", or the equivalent of 3 pulses per second. It has been found that the most visually desirable display is to then pulse the green and amber activity lights in synchronization for the first three of the five 100 ms logic level "high" time periods followed by two additional pulses of the green activity light for the remaining portion of the one second interval.

In the particular embodiment disclosed hereinafter, the green and amber activity lights may be simulated as bitmap images. For example, a dark green circular bitmap image may be used to indicate that the green activity light is "off", while a light green circular bitmap image may be used to indicate that the green activity light is "on".

Particularly disclosed herein is a method for visually indicating data cache activity in a computer system comprising the steps of monitoring the data cache for a first predetermined time period and determining a first number of data access requests which are satisfied from the data cache and a second number of data access requests which are satisfied from one or more other data sources during the predetermined time period. The method further comprises the steps of computing a percentage of the lesser of the first and second number of data access requests to the larger of the first and second number of data access requests and visually displaying at least one simulated indicator during a second predetermined time period substantially equal to the first predetermined time period, the at least one simulated indicator corresponding to the larger of the first and second number of data access requests.

In a more particular embodiment of the preceding method, the method may further comprise the step of also displaying another simulated indicator during the second predetermined time period, the another simulated indicator corresponding to the lesser of the first and second number of data access requests.

BRIEF DESCRIPTION OF THE DRAWINGS

The aforementioned and other features and objects of the present invention and the manner of attaining them will become more apparent and the invention itself will be best understood by reference to the following description of a preferred embodiment taken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a simplified representational drawing of a general purpose computer forming a portion of the operating environment of the present invention;

FIG. 2 is a representative graphical user interface ("GUI") for a particular computer program product implementation of the system and method of the present invention;

FIG. 3 is a logic flowchart for a possible implementation of the system and method for visually indicating data cache activity in a computer system; and

FIGS. 4A and 4B are analogous logic flowcharts illustrating in greater detail the steps which may be implemented to effectuate the step of polling the data cache once per second for statistics shown in FIG. 3; and

FIG. 5 is an additional analogous logic flowchart illustrating in greater detail the steps which may be implemented to effectuate the step of shifting of bit patterns to the indicators, or "lights", also shown in FIG. 3.

DESCRIPTION OF A PREFERRED EMBODIMENT

The environment in which the present invention is used encompasses the general distributed computing system, wherein general purpose computers, workstations or personal computers are connected via communication links of various types, in a client-server arrangement, wherein programs and data, many in the form of objects, are made available by various members of the system for execution and access by other members of the system. Some of the elements of a general purpose workstation computer are shown in FIG. 1, wherein a processor 1 is shown, having an input/output ("I/O") section 2, a central processing unit ("CPU") 3 and a memory section 4. The I/O section 2 may be connected to a keyboard 5, a display unit 6, a disk storage unit 9, a CDROM drive or unit 7 or a computer network 11 such as a wide area network ("WAN"), local area network ("LAN") or other network connection such as the Internet. The CDROM unit 7 can read a CDROM or CDROM medium 8 which typically contains programs 10 and data. The computer program products containing mechanisms to effectuate the apparatus and methods of the present invention may reside in the memory section 4, or on a disk storage unit 9 or on the CDROM 8 or network 11 of such a system.

With reference additionally now to FIG. 2, a representative graphical user interface 20 for the system and method of the present invention is shown. With respect to the graphical user interface 20, the system and method of the present invention is illustrated as implemented in conjunction with the PC-CacheFS program available from Sun Microsystems, Inc., assignee of the present invention.

The graphical user interface 20 includes, in pertinent part, a drive designator 22, a hits designator 24 and a misses designator 26, associated with information to be displayed within a sub-window area 28. As illustrated, the drive designator 22 in the exemplary illustration shown, shows a CDROM drive 7 (denominated as drive E:) and a network 11 data source (or network drive) within the sub-window 28. As to these two potential data sources (drive E: and the network drive) an indicator, or "light", 30 associated with the hits designator 24 and a misses indicator, or "light", 32 associated with the misses designator 26 are shown. In a preferred embodiment, the "hits" indicator 30 may be alternatively colored dark and light green to visually simulate pulsing and the "misses" indicator 32 alternatively colored dark and light amber to also visually simulate pulsing. Also illustrated in conjunction with the hits and misses indicators 30, 32, are alphanumeric representations of the relative percentages of hits and misses to the cache associated with a particular data source associated with the drive designator 22. In the illustration shown, only 32% of the data requests have been hits to the cache for the E: drive, while 68% of the data accesses have to have come from the original data source. This indicates a relatively poor caching performance in this exemplary illustration. With respect to the network 11 data source, it can be seen that no requests have been made to any data having its original source on the network or any data cached at a local caching device related thereto.

In the ensuing discussion of the exemplary PC-CacheFS program implementation of the system and method of the present invention, the following definitions shall pertain:

Access

Gaining use of information, typically from a remote location.

Average Cache-Hit Rate

The blue line on the Cache-Hit Rate graph of the GUI 20 represents the Average Cache-Hit Rate. Also displayed as a percentage under the Cache-Hit Rate graph, the Average Cache-Hit Rate represents average number of hits compared to the total number of hits and misses each time the PC-CacheFS program makes a consistency check.

Cache

A special place, for example on the hard drive 9 (FIG. 1) of a personal computer, reserved for storing the information you use most. To cache a network drive is to cause it to contribute information to a cache.

Cache-Hit Rate

The percentage of files read from the cache divided by the total number of files read from remote locations.

Capacity

Capacity is computed by taking the sum total size of files in the cache and dividing it by the total size defined for the cache. Capacity is reflected in the In Use graph in the PC-CacheFS program main window. if the In Use graph displays 25%, it means that 25% of the cache is being utilized. Therefore, if the cache size is 20 megabytes, and the capacity is 25%, only 5 megabytes of space is being used.

Consistency Check

A comparison between the date of file or directory information currently in the cache and the date of file or directory information on the remote drive.

Custom Installation

In a custom installation, the cache is manually set up, determining cache settings such as cache size, location, and the network drives to be cached. These settings are selected in the Cache Configuration dialog box. A custom installation can be used if a system condition exists that cannot be fulfilled by an express installation, such as caching a CDROM drive 7.

Directory Timeout

The Directory Timeout determines how long the PC-CacheFS program will retain a cached copy of directory information. The minimum and maximum timeout values establish a range. The PC-CacheFS program selects a value within the range based on the amount of time that has passed since the directory was modified. Recently modified directories are read again more quickly than less-recently modified directories. If a file is copied to the source drive from a computer other than the user's while the PC-CacheFS program retains a cached copy of the directory, the file will not be seen until the timeout expires. Setting low timeout minimum and maximum values increases directory consistency at the expense of network traffic. It is recommended to use longer minimum and maximum timeout values for directories that are modified only from the user's computer, or if when using network connections resulting in slower network performance, such as serial connections including PPP, SLIP, or RAS.

Disk-Based Caching

Caching in which data is stored on a hard disk. The amount of data stored relies on the amount of storage space on the hard disk. The information stored in the cache is retained following restart of the computer.

Express Installation

In an express installation, the PC-CacheFS program automatically sets up the cache. Cache settings such as cache size, location and the network drives to be cached are determined according to the current configuration of the computer and network. An express installation uses the PC-CacheFS program default settings, such as automatic caching of all network drives. The caching of CDROM drives 7 is not a default. If there is a need to cache a CDROM drive 7, or if another system condition exists that cannot be met in an express installation, a custom installation can be used.

File Timeout

The file timeout determines how often the PC-CacheFS program compares the modification time of the file on the source drive with the cached copy. The minimum and maximum timeout values establish a range. The PC-CacheFS program selects a value within the range based on the amount of time that has passed since the file was modified. Recently modified files are checked for consistency more frequently than less-recently modified files. Setting low timeout minimum and maximum values increases file consistency at the expense of network traffic. Larger timeout minimum and maximum values for files that change infrequently should be used or if using connections resulting in slower network performance, such as serial connections including PPP, SLIP, or RAS.

Hits

The number of times a user's files are accessed locally from the cache instead of over a network, off a server, or on a CDROM 8. Every time a read function is performed, such as opening or closing a file, the PC-CacheFS program is enabled to retrieve the information from its location. A "hit" occurs whenever the PC-CacheFS program retrieves the information from your cache. A "miss" occurs if the PC-CacheFS program retrieves the information from the remote location or data source.

When a hit occurs, a green light (or "hits" indicator 30) displays in the Hits field ("hits" designator 24) of the PC-CacheFS main window. A greater number of hits means that information in the cache is being used more often than in the remote location. The Cache-Hit Rate increases and the average Cache-Hit Rate line--the blue line--on the Cache-Hit Rate graph rises. This increase in the Cache-Hit Rate indicates that: the cache is working effectively; the speed at which information can be retrieved increased; and the speed of the network has increased because you information is being used locally in the cache.

Incremental Cache-Hit Rate

The green line on the Cache-Hit Rate graph represents the Incremental Cache-Hit Rate. The Incremental Cache-Hit Rate represents the number of hits compared to the total number of hits and misses over time.

Load

A measure of the activity on a network. As more people use the network, the load on the network increases. Increased load results in a slower network. As the load increases on the network, a user will have to wait longer periods of time to gain the information or files needed.

Memory-Based Caching

Caching in which the amount of information stored relies on the amount of memory available on the client. Only small amounts of information can be stored for short periods of time and are lost when the computer is rebooted.

Miss

The number of times files are accessed from a remote location or off of a CDROM drive 7 or other relatively slower access time data source rather than from the cache located on the local hard drive 9. Every time a read function is performed, such as opening or closing a file, the PC-CacheFS program is enabled to retrieve the information from its location. A "hit" occurs whenever the PC-CacheFS program retrieves the information from the local cache. A "miss" occurs if the PC-CacheFS program retrieves the information from the remote location or other data source.

When a "miss" occurs, an amber light (or "miss" indicator 32) is displayed in the Miss field of the PC-CacheFS main window. A greater number of "misses" means that information in the remote location is used more often than information in the cache. The Cache-Hit Rate decreases and the average Cache-Hit Rate line--the blue line--on the Cache-Hit Rate graph falls. This decrease in the Cache-Hit Rate indicates that: the cache is not working as effectively as it could be; the speed at which information can be retrieved is the same as it would be without the PC-CacheFS program; and the speed of the network has decreased because the network is being used to retrieve information.

Non-Volatile Caching

Non-volatile caching is a means of storing information, such as files, in a secure place where it will not be lost upon power-down or reboot of the computer. With the PC-CacheFS program, information is stored on the computer's hard drive 9.

Read Size

The Read Size is a measure of the number of bytes of information used during a "read" function. A "read" function is any task that retrieves information from a file or a directory and causes it to display on the associated monitor 6. "Read" functions include tasks such as opening files or creating new files.

In the PC-CacheFS program main window, the "read" size is reflected in the Total Kbytes Read from Cache and Source Drives. Performing the same "read" function continually causes the Cache-Hit Rate to increase. This increase is reflected in both the Cache-Hit Rate graph and the Cache-Hit Rate field.

The PC-CacheFS program breaks down large read requests from a remote location into smaller blocks of the specified Read Size to assist the computer in performing other tasks in a timely manner. The list of Read Size values can be selected in the Advanced dialog box and includes: 512, 1024, 2048, 4096, and 8192 bytes. The default value of 8192 bytes is suitable for LANs. A smaller Read Size should be utilized if network connections are used resulting in slower network performance, such as serial connections including PPP, SLIP, or RAS.

Transparent

Once installed, PC-CacheFS performs its functions without interfering with other application programs or the way in which a user otherwise interacts with the computer.

Volatile Caching

Volatile caching relies on the computer's available memory as temporary storage for your information. This information is lost when computer is powered down or rebooted.

Write Size

The Write Size is a measure of the number of bytes of information used during a "write" function. A "write" function is any task that causes information in the cache to be changed. "Write" functions include saving a file, deleting a file, or renaming a file. In the PC-CacheFS main window, the effects of write functions are displayed in the field, Modifications Made to Source Drives (Writes, Deletes, Renames).

"Write" functions are usually followed by "read" functions. For example, after saving a file (a "write" function) it can then be closed (a "read" function). Because the information in the cache is changed during a "write" function, the "read" functions that follow write functions are always "misses". An amber light (or "miss" indicator 32) displays in the Miss filed of the PC-CacheFS program main window when these functions occur.

The PC-CacheFS program breaks down large "write" requests to a remote location into smaller blocks of the specified Write Size to help the computer perform other tasks in a timely manner. The list of Write Size values which can be selected in the Advanced dialog box includes: 512, 1024 2048, 4096, and 8192 bytes. The default value of 8192 bytes is suitable for LANs. A smaller Write Size should be utilized if using network connections resulting in slower network performance, such as serial connections including PPP, SLIP, or RAS.

In the particular embodiment illustrated in FIG. 2, the system and method of the present invention may be incorporated into a computer program application that can also serve to reduce network traffic and improve system performance by copying the files most frequently accessed from a server to the client's local hard drive 9. This technique is referred to as caching as described previously and a portion of the hard drive 9 may be used, for example, as a cache. Caching allows quicker access to files because they can be read from the local hard drive 9, or other cache, instead of across the network thereby speeding access to requested files resident at remote locations, such as a server in a WAN, a directory accessed across a phone line or from a relatively slower access time CDROM drive 7. Utilizing the PC-CacheFS program illustrated, the recommended cache size is generally on the order of 30 megabytes for typical applications. Smaller hard drives or disks with little available space may necessitate a smaller cache. On the other hand, for larger hard drives, a larger cache may be specified.

When the PC-CacheFS program first retrieves information from a remote source and copies it into the cache, it retrieves as much information as will fill the cache. As the information is modified, the application updates the remote server and the local cache and will cache all the files accessed from the network data source. When the cache is full, the application overwrites the files in the cache that are least recently used ("LRU"). If a file is being shared in a Read-Only mode and the file is changed by another user, the PC-CacheFS program does not update the cache until an updated copy of the file is requested from the server.

The PC-CacheFS application program is designed to function with all network protocols, and as a generic industry-standard caching product, it is designed to work on a personal computer connected to any kind of network. The system and method of the present invention utilized therein may be made compatible with Microsoft® Windows™, Windows95™, WindowsNT™ and other industry standard operating systems.

The PC-CacheFS program is designed to be transparent to the user and it does not interfere with, or compensate for, the operation of client-server applications. In other words, if a client-server application provides the capability to share a file among multiple users, the PC-CacheFS program works within the file-sharing process of the application. If the application does not share files, the PC-CacheFS program does not compensate for possible deficiencies in data consistency.

If a network connection is lost, the PC-CacheFS program does not compensate by saving an updated copy on disk until the connection with the server is reestablished. If the server connection is lost while changing the contents of a file, the only place those changes will be stored is to the local system's memory. However, once contact has been reestablished with the server and changes may be saved to disk on the server, the PC-CacheFS program updates the local cache to reflect the new contents of the file on the server.

Upon system reboot, the PC-CacheFS program does not download a new copy of the files it was caching when the local system was shut down. If the contents are the same, the PC-CacheFS program does not update its cache. If the contents of some files have changed, the PC-CacheFS program only updates the changed files. This scheme further reduces network traffic and improves system performance.

PC-CacheFS installs a Virtual Device Driver (V_(X) D) which becomes part of the Windows™ operating system after rebooting. The PC-CacheFS Monitor application does not need to run for PC-CacheFS to provide caching services. The PC-CacheFS program window may be viewed at any time, for example, to look at cache statistics, change cache settings, flush the contents of the cache, or delete the cache. The PC-CacheFS program is compatible with, and may be started up, for example, in either Windows95™, Windows™ 3.1 and Windows™ for Workgroups 3.11.

After starting up the PC-CacheFS program for the first time after an express installation, custom cache settings may be selected by the user in order to set up the cache with desired settings. The cache can be set up again if it is ever deleted. For example, if new applications are added after installing the cache, it may be necessary to delete the cache to free some disk space for the applications and, at a latter date the cache may be set up again.

To expand the PC-CacheFS program main window to the configuration shown in FIG. 2, the user must click the View Statistics>> button (which indicates No Statistics>> when previously selected as shown). Expanding the PC-CacheFS program main window causes additional information to display in the PC-CacheFS program main window on the display unit 6. On the other hand, to collapse the PC-CacheFS program main window, the No Statistics>> button should be selected and clicked.

Over time, the PC-CacheFS program accumulates statistics about the function of the cache, such as the Cache-Hit Rate and Capacity. If it is desired that the fields in the PC-CacheFS program main window are to display the statistics for a particular drive, the statistics can be reset. By resetting the statistics, it is possible to determine the changes of statistics for a particular drive over time and to find out how one particular drive contributes to cache performance overall. Clicking the Reset Statistics button causes statistics to be reset to 0. As information is worked on remotely, new statistics display for the most recent cache conditions.

In order to cache a network drive, the user should click on Cache in the PC-CacheFS program main window followed by Configuration. The selection should then be made of the choice: Let me change my own cache settings. Cache All Network Drives may be selected to unselect this option. In the list of network drives shown, the path of the network drive desired to be cached should be selected followed by a click indicating OK. In this manner, the desired network drives to be cached are selected to be cached.

In order to cache all network drives automatically: In the PC-CacheFS program main window, click Cache; click Configuration; click Let me change my own cache settings; ensure that the box next to the field Cache All Network Drives is selected; and click OK. When new network drives are mapped to the local system configuration, they will automatically be cached.

In order to change the cache size: In the PC-CacheFS program main window, click Cache; click Configuration; click Let me change my own cache settings; in the Size of Disk Cache field, type the size, in megabytes, for the cache; and click OK. This sets the size of the cache. In order to change the cache location: In the PC-CacheFS program main window, click Cache; click Configuration; click Let me change my own cache settings; in the Cache On Drive field, click the down arrow and select the new drive on which the cache is to be located; and click OK. This selects the new cache location.

If it is desired to not to use the default settings of PC-CacheFS program, the default cache settings may be changed. For example, if a new hard drive is acquired which has greater disk space than the one on which the cache is currently maintained, a new cache location for the cache may be desired. It is also possible to change the size of the cache to be larger or smaller depending on the Capacity of the cache.

Since the configuration of the network may change and network or CDROM drives 7 may be added or deleted, a specific new drive may be chosen to be cached or all new drives may be cached automatically as they are added to the system configuration.

The Cache-Hit Rate may be understood as follows. The PC-CacheFS program works by retrieving file or directory information from a remote location, such as remote network drive over a phone line, and moving the information into the cache, stored on the local hard drive 9. As information in the cache is accessed, it is likely that the information will change. For example, when updating a spreadsheet that has been saved in the cache, the information that the spreadsheet contains is changed. To ensure that the files in the remote source location are updated with changes made to information in the cache, the PC-CacheFS program makes consistency checks between the cache and the remote or relatively slow access time data source location.

If the information in the cache is more recent than the information in the remote location, it fails the consistency check and is referred to as a "miss". When a "miss" occurs, an amber light (or indicator 32) displays in the Miss field of the PC-CacheFS program main window. When the information in the cache is current with the information in the remote location, it passes the consistency check and is referred to as a "hit". The information in the remote location is therefore current and does not need to be updated. The average of the number of "hits" to the total number of "hits" and "misses" is referred to as the Cache-Hit Rate.

The capacity percentage displays in the In Use graph of the PC-CacheFS program main window. When the cache is full, capacity reaches 100% in the In Use graph. As the cache becomes updated with new information from the remote data source location after consistency checks, the least recently used information is automatically removed from the cache. By making the cache larger, the least recently used information will most likely remain in the cache, causing a better Cache-Hit Rate during consistency checks.

The PC-CacheFS program was designed to improve the speed at which information may be accessed and used from remote and relatively slow access time data source locations. Because the PC-CacheFS program moves both file information and directory information into the cache, it can provide system performance speeds several times greater than would be experienced without a cache. Located in the Cache Details field of the PC-CacheFS program main window, the Relative Performance statistic indicates the percentage of improvement in system speed when compared to the same system without a cache. A relative performance of 100% indicates that the system is working at the same speed it would if the PC-CacheFS program were not installed. Relative performance increases as the Cache-Hit Rate increases. A relative performance under 100% can occur when PC-CacheFS automatically updates information in the cache, slowing the speed of the system below the regular system speed. A continued relative performance below 100% indicates that the information on the current drive is not being accessed enough times to necessitate caching that particular drive. Some of the factors that affect the Cache-Hit Rate include the type of data access, the cache size and the number of timeouts.

When the PC-CacheFS program retrieves information from a file on the server and places it in the cache, it is performing a function known as file caching. However, the PC-CacheFS program can also perform directory caching. In directory caching, information is stored about the path where a particular chunk of information is located in a directory. By moving this information into the cache, the time it typically takes to search for directory information on the network server is saved. Directory caching can be enabled for one particular drive on the network server, or for all drives or globally across the network.

By changing the read size, the amount of information that the PC-CacheFS program moves to or from the cache during a "read" function may be controlled. The PC-CacheFS program provides a default read size of 8192 bytes, although certain application may require that a smaller read size be set. Making the read size smaller causes fewer bytes of information to be moved between the cache and the remote location at a time. Consequently, the PC-CacheFS program must make more accesses to the network to satisfy a given request. These increased accesses will likely cause a greater load on the network than would occur utilizing a larger read size. By changing the write size, the amount of information that the PC-CacheFS program changes in the cache during a "write" function may be controlled. The PC-CacheFS program provides a default write size of 8192 bytes, although again, certain application may require that a smaller write size be set. Making the write size smaller causes fewer bytes of information to be moved between the cache and the remote location at a time. Consequently, the PC-CacheFS program must make more accesses to the network to satisfy a given request. These increased accesses cause a greater load to be placed on the network than would otherwise occur utilizing a larger read size.

If frequent changes must be made to the file information contained in the cache, the File Timeout Maximum and Minimum may be changed as appropriate. For example, if changes must be frequently made to a document, the File Timeout Maximum can be decreased to 20 and the File Timeout Minimum to 2 seconds. An amount of time greater than 2 seconds (but not more than 20 seconds) will pass before the PC-CacheFS program makes a file comparison between the cache and the remote location. Because comparisons and update of cache and server information are more frequent, greater load is then added to the network and more of a delay in retrieving information may be perceived. In most situations, there will be no need to decrease the File Timeout Minimum below the 3 second default.

The PC-CacheFS program provides a default File Timeout Maximum of 30 seconds and a default File Timeout Minimum of 3 seconds. This means that a maximum of 30 seconds and a minimum of 3 seconds will pass before the PC-CacheFS program compares the file information in the cache with the file information in the remote location for changes. Every time the PC-CacheFS program makes a comparison of cache and remote information, it takes time and adds to network traffic and the load on the network. If frequent changes are not made to the contents of the files in the cache, the File Timeout Maximum and Minimum can be increased. For example, if file information is not generally to be changed, the File Timeout Maximum can be increased to 50 seconds and the File Timeout Minimum to 5 seconds. An amount of time greater than 5 seconds (but not more than 50 seconds) will pass before the PC-CacheFS program makes a comparison between the file information in the cache and the information at the remote location. During this period of time, the information remains safe in the cache and network traffic and load is reduced.

If the directory information contained in the cache is frequently changed, the Directory Timeout Maximum and Minimum can be decreased. For example, if a remote network drive must be reconfigured and the directory structure changes frequently, the Directory Timeout Maximum can be decreased to 45 seconds and the Directory Timeout Minimum to 10 seconds. An amount of time greater than 10 seconds (but not more than 45 seconds) will then pass before the PC-CacheFS program makes a directory comparison between the cache and the remote location. Because comparisons and updates of cache and server information are more frequent, greater load is added to the network and more of a delay in retrieving information may be perceived. In most situations, there is no need to decrease the Directory Timeout Minimum below the 15 second default.

If frequent changes are not made to the directory structure or directory names contained in the cache, the Directory Timeout Maximum and Minimum can be increased. For example, if there is no need to change the directory structure on the remote network drive, the Directory Timeout Maximum can be increased to 120 seconds and the directory Timeout Minimum to 30 seconds, an amount of time greater than 30 seconds (but not more than 120 seconds) will then pass before the PC-CacheFS program makes a directory comparison between the contents of the cache and the remote location. During this period of time, the information remains safe in the cache and network traffic and load is reduced.

The PC-CacheFS program provides a default Directory Timeout Maximum of 60 seconds and a default Directory Timeout Minimum of 15 seconds. This means that a maximum of 60 seconds and a minimum of 15 seconds will pass before the PC-CacheFS program compares the directory information in the cache with the directory information in the remote location for changes. Every time the PC-CacheFS program makes a comparison of cache and remote information, it takes time and adds to network traffic and the load on the network.

If a need arises to use more disk space than is currently available on the local computer, the size of the cache may be changed or its contents "flushed". Making the cache smaller is generally the preferable solution if a sufficient amount of cache space is not being used. As previously described, the amount of cache space currently in use is indicated in the In Use graph. If the In Use percentage is low (i.e., under 50%), then making the cache smaller is a good option. Alternatively, flushing the cache is a preferable solution if there is a temporary need to make space available on the drive 9 of the local computer. Flushing the cache causes the information contained in the cache to be temporarily removed from the hard disk until the information is once again accessed.

If a need arises for more disk space on the local computer than is currently available, and there is no longer a need to use the cache, it may be deleted. Deleting the cache will cause the cache and all of the information contained in it to be completely removed from the computer. Deleting the cache is, therefore, a more permanent operation than flushing the cache, as the cache would have to be set up again and reconfigured for any future use.

With reference additionally now to FIG. 3, a process 40 for implementation of the system and method of the present invention is shown. The process 40 begins at step 42 where a timer is implemented providing 10 100 ms increments per second. This is followed by step 44 where a variable t is set equal to t+1. This step is followed by decision step 46 where a determination is made as to whether t MOD 10 is equal to zero. The cache is polled once per second for the relevant cache throughput statistics at step 48. If t MOD 10 is not equal to zero, the bit patterns (as shown in the following Table 1) are shifted to the graphic user interface 20 "lights" 30, 32 at step 50. The process 40 is completed at step 52.

                  TABLE 1                                                          ______________________________________                                         Patterns                                                                       ______________________________________                                         0:  0      0     0    0   0    0   0    0   0    0:  0                         1:  0      0     0    0   0    0   0    0   0    1:  1                         2:  0      0     0    0   0    0   0    1   0    1:  5                         3:  0      0     0    0   0    1   0    1   0    1:  21                        4:  0      0     0    1   0    1   0    1   0    1:  85                        5:  0      1     0    1   0    1   0    1   0    1:  341                       ______________________________________                                    

The above Table 1 illustrates the respective bit patterns for implementing a "blinking", or pulsing of the indicators 30, 32 for each of 0 through 5 times per second. The digit "1" corresponds to an indicator 30, 32 "on" while the digit "0" corresponds to an indicator 30, 32 "off". The decimal equivalent of the series of binary digits is given in the right hand column while the number of pulses per second is given in the left hand column.

With reference additionally now to FIGS. 4A and 4B, the above-described step 48 is shown in more detail. The process step 48 begins at step 54 where the first drive (A:) is addressed and the variable MAX is set equal to zero. At decision step 56, a determination is made as to whether the drive identified in step 54 is cached. If the drive identified in step 54 is cached, then at step 58, the variables hits drive! and misses drive! receive their respective values from the cache. On the other hand, if the drive identified in step 54 is not cached, the process 48 proceeds to step 70 where the drive designator is incremented to the next drive by the step drive=drive+1.

From step 58, a decision is made at decision step 60 that if the value of hits drive! is greater than MAX, then the variable MAX is set equal to hits drive! at step 62. If at decision step 60 the value of hits drive! is not greater than MAX, then at decision step 64, a decision is made as to whether the value of misses drive! is greater than MAX. If misses drive! is greater than MAX, then the variable MAX is set equal to misses drive! at step 66. Alternatively, if misses drive! is not greater than MAX, then at decision step 68, a determination is made as to whether the final drive has as yet been addressed by the process 48. In other words, if the current drive is equal to Z: (or the last available drive for the computer system), then the process proceeds to the portion of the process step 48 indicated on FIG. 4B. Otherwise, the process step 48 proceeds to step 70 to again increment the drive under consideration.

With reference specifically now to FIG. 4B, at step 72 the first drive is accessed by setting the variable drive=A:. Thereafter, at decision step 74, if drive A: is a cached drive, then the process 48 proceeds to step 76 where the variable "green" is set equal to an integer of 5× the quantity hits drive!/MAX and "amber" is set equal to an integer 5× the quantity misses drive!/MAX. If at decision step 74, a determination is made that drive A: is not cached, then the process step 48 proceeds to step 82 where the designator of the drive is incremented by replacing the variable "drive" with the variable "drive+1", returning then to decision step 74.

Following step 76, the variable green bits drive! is set equal to patterns green! and the variable amber bits drive! is set equal to patterns amber! (see Table 1). Thereafter, at decision step 80, if the drive under consideration in the process 48 is the last available drive, then the process proceeds to step 84 where it is completed. Alternatively, if the drive under consideration is not the last drive (or drive Z:), then the process step 48 returns to step 82 to increment the drive by replacing the variable "drive" with the variable "drive+1".

With reference additionally now to FIG. 5, the process step 50 (FIG. 3) is shown in greater detail. The process step 50 begins at step 90 where the variable "drive" is set equal to the first available drive (or drive A:). Thereafter, at decision step 92, if drive A: is cached, then the process 50 proceeds to step 94 where if bit 0 of the variable green bits drive! is equal to 1, then at step 96, the green (or "hits") light (or indicator) 30 is drawn "on". However, if at decision step 92, drive A: is not cached, then the drive under consideration is incremented at step 110 by setting the variable "drive" equal to the variable "drive+1" followed by a return to the beginning of decision step 92.

If at decision step 94, bit 0 of the variable green bits drive! is not equal to 1, then at step 98, the green (or "hits") light (or indicator) 30 is drawn "off" at step 98.

At decision step 100, if bit 0 of the variable amber bits drive! is equal to 1, then at step 102, the amber (or "misses") light (or indicator) 32 is drawn "on". Alternatively, if at decision step 100, bit 0 of the variable amber bits drive! is not equal to 1, then at step 104 the amber (or "misses") light (or indicator) 32 is drawn "off" and the process step 50 proceeds to step 106 from either step 102 or step 104.

At step 106, the variables green bits drive! and amber bits drive! are each shifted right one bit. Thereafter, at decision step 108, a decision is made as to whether the last drive under consideration in the process 50 has been reached. In this regard, if the variable "drive" is equal to Z:, then the process step 50 is completed at step 112. On the other hand, if there are still other drives to be considered, the process returns to step 110 where the identification of the drive is incremented by setting the variable "drive" equal to "drive+1".

While there have been described above the principles of the present invention in conjunction with specific computer program products, graphics user interfaces and computer system configurations, it is to be clearly understood that the foregoing description is made only by way of example and not as a limitation to the scope of the invention. Particularly, it is recognized that the teachings of the foregoing disclosure will suggest other modifications to those persons skilled in the relevant art. Such modifications may involve other features which are already known per se and which may be used instead of or in addition to features already described herein. Although claims have been formulated in this application to particular combinations of features, it should be understood that the scope of the disclosure herein also includes any novel feature or any novel combination of features disclosed either explicitly or implicitly or any generalization or modification thereof which would be apparent to persons skilled in the relevant art, whether or not such relates to the same invention as presently claimed in any claim and whether or not it mitigates any or all of the same technical problems as confronted by the present invention. The applicants hereby reserve the right to formulate new claims to such features and/or combinations of such features during the prosecution of the present application or of any further application derived therefrom. 

What is claimed is:
 1. A method for visually indicating data cache activity in a computer system comprising the steps of:providing for monitoring said data cache for a first predetermined time period; providing for determining a first number of data access requests which are satisfied from said data cache and a second number of data access requests which are satisfied from at least one other data source during said predetermined time period; providing for computing a percentage of the lesser of said first and second number of data access requests to the larger of said first and second number of data access requests; and providing for visually displaying at least one simulated indicator during a second predetermined time period substantially equal to said first predetermined time period, said at least one simulated indicator corresponding to said larger of said first and second number of data access requests.
 2. The method of claim 1 further comprising the step of:providing for pulsing said at least one simulated indicator during said second predetermined time period.
 3. The method of claim 2 wherein said step of providing for pulsing is carried out by the steps of:providing for initially displaying a selected color rendition of said at least one simulated indicator; providing for alternatively displaying a lighter tone selected color rendition of said at least one simulated indicator; and providing for repeating said steps of providing for initially and alternatively displaying during said second predetermined time period.
 4. The method of claim 2 wherein said step of providing for pulsing is carried out substantially throughout said second predetermined time period.
 5. The method of claim 4 wherein said step of providing for pulsing is carried out between first and second states thereof substantially every 100 ms.
 6. The method of claim 1 further comprising the step of:providing for also displaying another simulated indicator during said second predetermined time period, said another simulated indicator corresponding to said lesser of said first and second number of data access requests.
 7. The method of claim 6 further comprising the step of:providing for also pulsing said another simulated indicator during said second predetermined time period.
 8. The method of claim 7 wherein said step of providing for also pulsing is carried out by the steps of:providing for also initially displaying a selected color rendition of said another simulated indicator; providing for also alternatively displaying a lighter tone selected color rendition of said another simulated indicator; and providing for also repeating said steps of providing for initially and alternatively displaying during said second predetermined time period.
 9. The method of claim 7 wherein said step of providing for also pulsing is carried out substantially for said computed percentage during said second predetermined time period.
 10. The method of claim 7 wherein said step of providing for also pulsing is carried out between first and second states thereof substantially every 100 ms.
 11. The method of claim 7 wherein said steps of providing for pulsing and also pulsing are substantially synchronized.
 12. The method of claim 7 wherein said step of providing for also pulsing begins substantially coincidentally with an inception of said second predetermined time period.
 13. A computer program product comprising:a computer usable medium having computer readable code embodied therein for visually indicating data cache activity in a computer system, the computer program product comprising:computer readable program code devices configured to cause a computer to effect monitoring said data cache for a first predetermined time period; computer readable program code devices configured to cause a computer to effect determining a first number of data access requests which are satisfied from said data cache and a second number of data access requests which are satisfied from at least one other data source during said predetermined time period; computer readable program code devices configured to cause a computer to effect computing a percentage of the lesser of said first and second number of data access requests to the larger of said first and second number of data access requests; and computer readable program code devices configured to cause a computer to effect visually displaying at least one simulated indicator during a second predetermined time period substantially equal to said first predetermined time period, said at least one simulated indicator corresponding to said larger of said first and second number of data access requests.
 14. The computer program product of claim 13 further comprising:computer readable program code devices configured to cause a computer to effect pulsing said at least one simulated indicator during said second predetermined time period.
 15. The computer program product of claim 14 wherein said computer readable program code devices configured to cause a computer to effect pulsing said at least one simulated indicator comprise:computer readable program code devices configured to cause a computer to effect initially displaying a selected color rendition of said at least one simulated indicator; computer readable program code devices configured to cause a computer to effect alternatively displaying a lighter tone selected color rendition of said at least one simulated indicator; and computer readable program code devices configured to cause a computer to effect repeating said steps of initially and alternatively displaying during said second predetermined time period.
 16. The computer program product of claim 14 wherein said computer readable program code devices configured to cause a computer to effect pulsing said at least one simulated indicator are configured to effectuate said pulsing substantially throughout said second predetermined time period.
 17. The computer program product of claim 16 wherein said computer readable program code devices configured to cause a computer to effect pulsing said at least one simulated indicator are configured to effectuate said pulsing between first and second states thereof substantially every 100 ms.
 18. The computer program product of claim 13 further comprising:computer readable program code devices configured to cause a computer to effect also displaying another simulated indicator during said second predetermined time period, said another simulated indicator corresponding to said lesser of said first and second number of data access requests.
 19. The computer program product of claim 18 further comprising:computer readable program code devices configured to cause a computer to effect also pulsing said another simulated indicator during said second predetermined time period.
 20. The computer program product of claim 19 wherein said computer readable program code devices configured to cause a computer to effect also pulsing said another simulated indicator further comprise:computer readable program code devices configured to cause a computer to effect also initially displaying a selected color rendition of said another simulated indicator; computer readable program code devices configured to cause a computer to effect also alternatively displaying a lighter tone selected color rendition of said another simulated indicator; and computer readable program code devices configured to cause a computer to effect also repeating said steps of initially and alternatively displaying during said second predetermined time period.
 21. The computer program product of claim 19 wherein said computer readable program code devices configured to cause a computer to effect also pulsing said another simulated indicator are configured to effectuate said also pulsing substantially for said computed percentage during said second predetermined time period.
 22. The computer program product of claim 19 wherein said computer readable program code devices configured to cause a computer to effect also pulsing said another simulated indicator are configured to effectuate said also pulsing between first and second states thereof substantially every 100 ms.
 23. The computer program product of claim 19 wherein said computer readable program code devices configured to cause a computer to effect pulsing said at least one simulated indicator and also pulsing said another simulated indicator are configured to effectuate said pulsing and also pulsing in substantial synchronization.
 24. The computer program product of claim 19 wherein said computer readable program code devices configured to cause a computer to effect also pulsing said another simulated indicator are configured to effectuate said also pulsing beginning substantially coincidentally with an inception of said second predetermined time period.
 25. A graphical user interface for a display device of a computer system, said computer system including a central processing unit, a data cache and at least one other data source, said graphical user interface comprising:said central processing unit for monitoring said data cache for a first predetermined time period and determining a first number of data access requests which are satisfied from said data cache and a second number of data access requests which are satisfied from said at least one other data source and computing a percentage of the lesser of said first and second number of data access requests to the larger of said first and second number of data access requests; and at least one simulated indicator for display on said graphical user interface of said display device in response to said central processing unit, said at least one simulated indicator being displayed during a second predetermined time period substantially equal to said first predetermined time period, said at least one simulated indicator corresponding to said larger of said first and second number of data access requests.
 26. The graphical user interface of claim 25 wherein said at least one simulated indicator is pulsed during said second predetermined time period.
 27. The graphical user interface of claim 26 wherein said at least one simulated indicator is pulsed by alternatively displaying a selected color and a lighter tone of said selected color renditions of said at least one simulated indicator.
 28. The graphical user interface of claim 25 further comprising:another simulated indicator for display on said graphical user interface of said display device in response to said central processing unit, said another simulated indicator being displayed during said second predetermined time period, said another simulated indicator corresponding to said lesser of said first and second number of data access requests.
 29. The graphical user interface of claim 28 wherein said another simulated indicator is pulsed during said second predetermined time period substantially for said computed percentage thereof.
 30. The graphical user interface of claim 28 wherein said another simulated indicator is pulsed by alternatively displaying a selected color and a lighter tone of said selected color renditions of said another simulated indicator.
 31. The graphical user interface of claim 28 wherein said pulsing of said at least one and said another simulated indicators is substantially synchronized.
 32. The graphical user interface of claim 29 wherein said pulsing of said at least one and said another simulated indicators begins substantially coincidentally with an inception of said second predetermined time period.
 33. The graphical user interface of claim 25 wherein said selected color of said at least one simulated indicator comprises green or amber.
 34. The graphical user interface of claim 30 wherein said selected color of said another simulated indicator comprises green or amber.
 35. The graphical user interface of claim 25 wherein said at least one simulated indicator further comprises:an associated alphanumeric designation of a first total access percentage of the larger of said first and second number of data requests to the total of said first and second number of data access requests.
 36. The graphical user interface of claim 30 wherein said another simulated indicator further comprises:an associated alphanumeric designation of a second total access percentage of the lesser of said first and second number of data requests to the total of said first and second number of data access requests. 